package core

import (
	"fmt"
	"log"
	"os"
	"path/filepath"
	"regexp"
	"time"
)

var AmiLoger *log.Logger = nil

func RemoveFilePatten(path, p string) error {
	re := regexp.MustCompile(p)
	mfunc := func(s string) bool { return re.MatchString(s) }
	// 获取目录内容
	lis, err := os.ReadDir(".")
	if err != nil {
		return err
	}
	// 删除指定的文件
	for _, de := range lis {
		if de.IsDir() && mfunc(de.Name()) {
			pathName := filepath.Join(path, de.Name())
			fmt.Printf("pathName: %v\n", pathName)
			os.Remove(pathName)
		}
	}
	return nil
}

// 删除所有的Log文件
func RemoveLogFiles() {
	RemoveFilePatten(".", `Server.log`)
	RemoveFilePatten(".", `Scan-\d+.log`)
}

func Init_ServerLogger() {
	RemoveLogFiles() // 删除已经存在的日志文件
	if AmiLoger == nil {
		filename := "Server.log"
		file, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
		if err != nil {
			return
		}
		// 初始化中间文件的Log
		AmiLoger = log.New(file, "[DEBUG] ", log.Ldate|log.Lmicroseconds|log.Lshortfile)
		AmiLoger.Print("AmiLoger log Server ok")
	}
}

func Init_ScanLogger() {
	RemoveLogFiles() // 删除已经存在的日志文件
	if AmiLoger == nil {
		t := time.Now().UnixMicro()
		filename := fmt.Sprintf("Scan-%v.log", t)
		file, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
		if err != nil {
			return
		}
		// 初始化中间文件的Log
		AmiLoger = log.New(file, "[DEBUG] ", log.Ldate|log.Lmicroseconds|log.Lshortfile)
		AmiLoger.Print("AmiLoger log Scan ok")
	}
}
